#include "mcu.h"



int DisIntLevel = 0;

/**
 * 汇编启动代码会先调用SystemInit，在调用main之前.
 * 统一开启一些外设时钟
*/
void SystemInit_Extend()
{
    RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_CLKEN, ENABLE);
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_CLKEN, ENABLE);
    RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_CLKEN, ENABLE);

    // ADC采样时钟，最大72M，144/16=9M,64/16=4M
    ADC_ConfigClk(ADC_CTRL3_CKMOD_AHB, _ADC_CLK_DIV);   
    // 配置用于ADC计时的1M时钟源，必须配成1M。
#if SYSCLK_SRC == 3
#if HSE_VALUE == 8000000
    RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV8);  //selsect HSE as RCC ADC1M CLK Source		
#elif HSE_VALUE == 12000000
    RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV12);  //selsect HSE as RCC ADC1M CLK Source		
#else
    #error "HSE Error!"
#endif
#else
    RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSI, RCC_ADC1MCLK_DIV8);
#endif

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
}


// void Nvic_Enable(IRQn_Type irqn) // 使用CMSIS接口
// {
//     NVIC_ClearPendingIRQ(irqn); // 清除NVIC中断标志位
//     NVIC_SetPriority(irqn, 3);  // 优先级 3 （0~15）
//     NVIC_EnableIRQ(irqn);       // NVIC允许中断
// }

void Nvic_Enable(IRQn_Type irqn)    // 国民技术官方方式
{
    NVIC_InitType NVIC_InitStructure;

    NVIC_InitStructure.NVIC_IRQChannel            = irqn;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}




